﻿using System.Collections.Generic;
using Sebrae.Academico.InfraEstrutura.Core;
using Sebrae.Academico.InfraEstrutura.Core.UnitOfWork;
using Sebrae.Academico.Trilhas.Dominio.Classes;
using Sebrae.Academico.InfraEstrutura.Seguranca.Autenticacao;

namespace Sebrae.Academico.Trilhas.BM.Classes
{
    public class BMUsuario: BusinessManagerBase
    {

        #region Atributos

        private RepositorioBase<Usuario> repositorio;

        #endregion

        #region "Construtor"

        public BMUsuario(IUnitOfWork unitOfWork)
        {
            repositorio = new RepositorioBase<Usuario>(unitOfWork);
        }

        #endregion

        public Usuario ObterPorId(int ID)
        {
            return repositorio.ObterPorID(ID);
        }

        public IList<Usuario> BuscarporNome(Usuario ptrilha)
        {
            return repositorio.GetByProperty("Nome", ptrilha.Nome);
        }

        public void Salvar(Usuario pUsuario)
        {
            repositorio.Salvar(pUsuario);
        }

        public IList<Usuario> ObterUsuarios()
        {
            return repositorio.ObterTodos();
        }

        public void ExcluirUsuario(Usuario pUsuario)
        {
            repositorio.Excluir(pUsuario);
        }

        public bool AutenticaUsuario(AuthenticationRequest autenticacao)
        {
            Usuario usuario = ObterUsuarioPorCPF(autenticacao.Login);
            return (usuario != null || usuario.ID > 0);
        }

        public Usuario ObterUsuarioPorCPF(string pCPF)
        {
            return repositorio.GetByProperty("CPF", pCPF)[0];
        }



       
    }
}
